package com.example.lean;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity
        implements AdapterView.OnItemClickListener, AdapterView.OnItemLongClickListener {

    // 默认的备忘内容
    String[] aMemo = {"1. 单击可以编辑备忘", "2. 长按可以清除备忘", "3.", "4.", "5.", "6."};
    ListView lv; // 显示备忘录的 ListView
    ArrayAdapter<String> aa; // ListView 与备忘数据的桥梁

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        lv = (ListView) findViewById(R.id.listView);
        aa = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, aMemo);
        lv.setAdapter(aa);    //设置 listView1 的内容
        //设置 listView1 被单击的监听器
        lv.setOnItemClickListener(this);
        //设置 listView1 被长按的监听器
        lv.setOnItemLongClickListener(this);
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Intent it = new Intent(this, EditActivity.class);
        it.putExtra("编号", position + 1);      //附加编号
        it.putExtra("备忘", aMemo[position]); //附加备忘选项的内容
        //startActivity(it);                  //启动 Edit 活动
        //第一个参数：一个Intent对象
        //第二个参数：如果> = 0,当Activity结束时requestCode将归还在onActivityResult()中。以便确定返回的数据是从哪个Activity中返回
        startActivityForResult(it, position);  //启动 Edit 活动
    }

    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
        aMemo[position] = (position + 1) + "."; //将内容清除 (只剩编号)
        aa.notifyDataSetChanged();  //通知 Adapter 要更新数组内容
        return true;             //返回 true 表示此事件已处理
    }

    //第一个参数：这个整数requestCode提供给onActivityResult，是以便确认返回的数据是从哪个Activity返回的。这个requestCode和startActivityForResult中的requestCode相对应。
    //第二个参数：这整数resultCode是由子Activity通过其setResult()方法返回。
    //第三个参数：一个Intent对象，带有返回的数据
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent it) {
        super.onActivityResult(requestCode, resultCode, it);
        if (resultCode == RESULT_OK) {
            aMemo[requestCode] = it.getStringExtra("备忘");
            aa.notifyDataSetChanged();  //通知 Adapter 要更新数组内容
        }
    }
}